package com.youdianda.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.youdianda.dto.RegDto;
import com.youdianda.dto.UserLoginDTO;
import com.youdianda.dto.*;

import com.youdianda.entity.YddArticle;
import com.youdianda.entity.YddUser;
import com.youdianda.result.Result;

import com.youdianda.vo.YddUserTokenVo;
import com.youdianda.vo.UserInfoVo;
import com.youdianda.vo.YddUserVO;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author mosen
 * @since 2023-05-15
 */
public interface IYddUserService extends IService<YddUser> {

    /**
     * 登录
     * @param
     * @return
     */
    Result login(UserLoginDTO dto);

    /**
     * 获取用户资料
     * @return
     */

     Result getUserData();

    /**
     * 获取前台用户信息
     * @return
     */
    Result<UserInfoVo> getUserDataFront();

    /**
     * 获取我的文章信息
     * @param dto
     * @return
     */
    Result getMyArticle(MyArticleQueryDTO dto);

    /**
     * 获取我的收藏/点赞文章
     * @param dto
     * @return
     */
    Result getUserDataList(UserDataListDTO dto);

    /**
     * 修改用户资料，这里不需要先回显再查询，因为回显数据从/getUserInfo中获取
     * @param yddUser
     * @return
     */
    Result updateUser(YddUser yddUser);



    /**
     * 点赞/取消点赞和收藏/取消收藏
     * @param dto
     * @return
     */
    Result updateCollectOrZan(UpdateCollectOrZanDTO dto);


    /**
     * 发布文章
     * @param yddArticle
     * @return
     */
    Result addArticle(YddArticle yddArticle);

    /**
     * 删除文章
     * @param
     * @return
     */
    Result delArticle(Integer id);
    public Result getUserData();

    /**
     * 注册
     * @param regDto
     * @return
     */
    YddUserTokenVo reg(RegDto regDto);

    /**
     * 修改文章状态为发布
     * @param yddArticle
     * @return
     */
    Result editArticle(YddArticle yddArticle);

    /**
     * 前台登录
     * @param dto
     * @return
     */
    Result frontLogin(YddUserLoginDTO dto);

    /**
     * 注册
     * @param regDto
     * @return
     */
    YddUserVO reg(RegDto regDto);

}
